docs(pm): add the triage seat's lane reference and its ratchet rows - #15958
Conversation
The triage seat had no file under `references/lanes/`: its standing duties live in SKILL.md 〈分诊座位职责〉, which sits at its ceiling. This adds the seat's own lane reference, holding today only the ruled pickup discipline — one repo per fire alternating between the two multi-lane repos, oldest-first inside a repo, the 4-hour starvation guard, and the two prohibitions (no fallback to a global oldest-first across repos, no second triage seat and no fire-frequency change for backlog). The ratchet gains the new file's two rows: `CEILINGS` at the landed line count read from the gate's own run (7 lines, headroom 0, the map's convention for a new file) and `MAX_TABLE_ROW_BYTES` at 0, the file carrying no table row. No other row of either map moves and no other instruction file is touched. Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox Co-authored-by: Claude <noreply@anthropic.com>
|
ACCEPT — lands #15671 as ruled. Governed ( What the seat verified, at head
Open question answered: A. A seat gets the seat form of H1, and the pointer takes the tail eight files already share where the director's spelling would cross the byte cap. Follow-up graded: #15965 (the self-test's hand-written lane roster pins no case for a ninth lane file) — same file, so it waits behind this PR. Implemented-by: os-dev executor, flight #15671, branch Generated by Claude Code |
维护者速读改了什么:新增分诊席的岗位说明文件( 为什么改:这套纪律此前只存在于裁决记录里,分诊席每轮靠记忆执行,偏离了没人指得出来;原设想的落点(手册的分诊座位职责一节)已顶到 811 行上限,所以按裁决的执行说明另起车道文件,让规则跟仓库走。 风险与代价(含回滚):纯文档,不改任何可执行行为;36 个派生门禁 + 全仓 lint 全绿,席位复跑棘轮(7/7、自测 155 例不变)、编号 lint、受管面判定。代价:常读指令面多 7 行,且上限钉死在 7,以后加规则须先删等量或走裁决。回滚 = revert 一个提交。 席位意见:建议批准。四轴:业务——分诊两仓饥饿是实测过的问题,裁决已在;长远——规则住版本化文件、单源;防 AI 错——三条都是闭合规则,含两条明确禁令;创业阶段——7 行、零新机制。附带:dev 发现棘轮自测的车道名单是手写八项,新文件的上限行没有用例钉住,已立 #15965 排在本 PR 之后。 你要做的:批准并入队,或人工直合。一字:是/否。 Generated by Claude Code |
Fixes #15671
What this lands
Two files, exactly as the card rules them.
New
.claude/skills/pm-dispatch/references/lanes/triage.md— 7 lines: the H1 the sibling lane files open with, the pointer line naming the SKILL.md section it details (〈分诊座位职责〉), then the three ruled rules, one per line. Nothing else lives in the file today.SKILL.mdand the eight existing lane files are untouched.scripts/pm/check-skill-line-ratchet.mjs— two added rows and nothing else:CEILINGSgainslanes/triage.mdat 7, the landed line count read from the gate's own run (headroom 0, the map's convention for a new file), andMAX_TABLE_ROW_BYTESgains it at 0, the file carrying no table row. No other row of either map moves; the diff on this file is 8 added lines and 0 removed.Byte widths
Measured with
LC_ALL=C awk. The widest line is line 3, the pointer line, at 119 bytes against the 120-byte budget; the three rule lines are 113 / 110 / 101 bytes.That pointer line takes the seat wording of
lanes/director.mdwith the shorter tail the six domain lane files use (⛔ 不迁入本文。): director's own spelling with 〈分诊座位职责〉 substituted measures 122 bytes and would have been red.Gates
Union re-run on head
32945f93f1, after the final commit.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 36 commands from the 2-path change set. All 36 were run; the reconcile agrees:✓ dispatch-gates --ran: 36 derived famil(ies) accounted for — 36 run, 0 NOT-MEASURED.✓ check-skill-line-ratchet self-test: 155 cases pass.(155 onmaintoo — no case added or removed.)✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/lanes/triage.md is 7 lines (ceiling 7; headroom 0).✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/lanes/triage.md: widest table row is 0 bytes (pin 0; headroom 0).Every other ceiling line in that run is unchanged.✓ check-skill-id-lint: 25 file(s) clean (pattern /#[0-9]{3,}/g).— the new file is one of the 25; it carries no card number and no date.check-skill-frame-sync:binding sentence present in all 2; 4 count mention(s) agree; 74 markdown files scanned for undeclared copies.The decision frame does not appear in the new file, and its anti-dormancy scan agrees.✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces … and claim no others.check-nul-bytes: OK (scanned 7694 text file(s) … no raw ASCII control bytes).pnpm lint(eslint . --no-inline-config) green throughscripts/pm/os-verify-lock.sh, slotissue-15671:VERDICT command-exit 0 · held the lock 82s.pnpm --filter @objectstack/lint run check:doc-formula-expressions. Built@objectstack/formulaand@objectstack/lintthrough the same lock, re-ran it, green.node scripts/pm/check-governed-merges.mjs --teston the two paths exits 3 — GOVERNED (.claude/**hit). Draft PR, human merge; no seat flips it ready, enqueues it, or arms auto-merge.skip-changesetapplies: nothing here publishes from a package.One roster note — reported, not taken
The ratchet's self-test case labelled
all eight lane/seat job descriptions are coveredenumerates the eight pre-existing lane files and is an.everyover that list, so a ninth file keeps it green. This file's coverage is therefore pinned by its two map rows and by the map-wideevery ceilinged file carries a pincase, but not by that roster. Extending the roster would also rename a label pinned in the self-test's expectation table — beyond the two map rows this card rules, so it is reported to the seat rather than taken here.维护者速读(草稿)
改了什么 — 新增一个分诊席的岗位说明文件,把已裁定的取卡纪律写成三条规则:每轮只取一个仓、两仓轮替、仓内最旧优先;任一仓最旧未路由卡超过 4 小时时该仓插队;不回退到跨仓全局最旧优先,也不因积压加席或改频率。同时在行数棘轮里给这个新文件登记一行上限。不动任何既有指令文件。
为什么改 — 这套纪律此前只存在于一次裁决记录里,分诊席每轮开工靠记忆执行,偏离了没人指得出来。写进版本化的岗位说明后,规则跟着仓库走。原本设想的落点(SKILL.md 的分诊座位职责一节)已经顶到行数上限,且有两张卡在它上面串行,所以按卡的判断另起一个车道文件。
风险与代价(含回滚) — 纯文档增量,不改任何可执行行为;派生的 36 个门禁族与全仓 lint 全绿。代价是常读指令面多了 7 行,且棘轮上限钉死在 7、没有余量:以后要往这个文件加规则,得先删同等行数或走裁决。回滚就是 revert 这一个提交,无残留。
席位意见 —
你要做的(一个动作) — 读一遍文件里那三条规则,确认就是你要的分诊取卡纪律;是的话合并这个 PR。
Generated by Claude Code